/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.utilitario;

import br.com.foxinline.modelo.Imovel;
import br.com.foxinline.modelo.Proprietario;
import br.com.foxinline.servico.FaceQuadraServico;
import br.com.foxinline.servico.ImovelServico;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author roniere
 */
@ManagedBean
@ViewScoped
public class ManagerRelatorioSts implements Serializable {

    @EJB
    ImovelServico imovelServico;
    @EJB
    FaceQuadraServico faceQuadraServico;
    List<ResumoImovelIptuVO> list;
    private StringBuilder txt;
    private String sql = "SELECT distinct(i) FROM Imovel i JOIN i.proprietarios p "
            + " JOIN i.enderecoImovel ei JOIN i.dimensoes d"
            + " where"
            + " d.areaTerreno is not null and i.status = true and i.ativo = true"
            + " order by i.id asc ";

    @PostConstruct
    public void init() {
    }

    public void relatorio() {
        
        
        txt = new StringBuilder();
        txt.append("id;distrito;setor;quadra;lote;unidade;valorface;nome;documento;logradouro;numero;bairro;cep;complemento;"
                + "areaterreno;areatotaledificacao;areaunidade;numpavimentacaoedific;testadaimovel;"
                + "testadaServidaConservCalcamento;testadaServidaPorIluminacaoPublica;testadaServidaLimpezaPublica;"
                + "conservacao;isento;ocupacao;topografia;situacaoterreno;pedologia;utilizacao;"
                + "patrimonio;usoimovel;caracterizacao;revexterno;piso;forro;cobertura;"
                + "instsanitaria;insteletrica;posicao;fachada;estrutura;tsu;tipoconstrucao;iluminacao;limpezapublica");
        list = new ArrayList<ResumoImovelIptuVO>();
        List<ProprietarioIptuVO> proprietarioIptuVOs;
        for (Imovel i : imovelServico.relatorioSts(sql)) {
            proprietarioIptuVOs = new ArrayList<ProprietarioIptuVO>();
            for (Proprietario proprietario : i.getProprietarios()) {
                proprietarioIptuVOs.add(
                        new ProprietarioIptuVO(
                        (proprietario.getNome() == null ? proprietario.getNomeFantasia() : proprietario.getNome()),
                        (proprietario.getCpf() == null ? proprietario.getCnpj() : proprietario.getCpf())));
                break;
            }

            if (i.getEnderecoImovel() == null) {
                //não mostra
            } else {
                ResumoImovelIptuVO resumoImovelIptuVO = new ResumoImovelIptuVO();
                resumoImovelIptuVO.setId(i.getId());
                resumoImovelIptuVO.setDistrito(i.getInscricaoCadastralD());
                resumoImovelIptuVO.setSetor(i.getInscricaoCadastralS());
                resumoImovelIptuVO.setQuadra(i.getInscricaoCadastralQuadra());
                resumoImovelIptuVO.setLote(i.getInscricaoCadastralLote());
                resumoImovelIptuVO.setUnidade(i.getInscricaoCadastralUnid());
                resumoImovelIptuVO.setValorFace(faceQuadraServico.valorFaceQuadraManual(i));
                resumoImovelIptuVO.setProprietario(proprietarioIptuVOs);

                resumoImovelIptuVO.setLogradouro(i.getEnderecoImovel().getLogradouro() != null ? i.getEnderecoImovel().getLogradouro() : i.getEnderecoImovel().getNomeclog());
                resumoImovelIptuVO.setComplemento(i.getEnderecoImovel().getCompl());
                resumoImovelIptuVO.setCep(i.getEnderecoImovel().getCep());
                resumoImovelIptuVO.setNumero(i.getEnderecoImovel().getNumero());
                resumoImovelIptuVO.setBairro(i.getEnderecoImovel().getBairroDne() != null ? i.getEnderecoImovel().getBairroDne().getNome() : i.getEnderecoImovel().getBairro());
                resumoImovelIptuVO.setAreaterreno(i.getDimensoes().getAreaTerreno());
                resumoImovelIptuVO.setAreatotaledificacao(i.getDimensoes().getAreaTotalEdificacao());
                resumoImovelIptuVO.setAreaunidade(i.getDimensoes().getAreaUnidade());
                resumoImovelIptuVO.setNumpavimentacaoedific(i.getDimensoes().getNumPavimentacaoEdific());
                resumoImovelIptuVO.setTestadaImovel(i.getDimensoes().getTestadaImovel());
                resumoImovelIptuVO.setTestadaServidaConservCalcamento(i.getDimensoes().getTestadaServidaConservCalcamento());
                resumoImovelIptuVO.setTestadaServidaPorIluminacaoPublica(i.getDimensoes().getTestadaServidaPorIluminacaoPublica());
                resumoImovelIptuVO.setTestadaServidaLimpezaPublica(i.getDimensoes().getTestadaServidaLimpezaPublica());


                resumoImovelIptuVO.setConservacao(i.getEstadoConservacao()+"");
                resumoImovelIptuVO.setIsento(i.getIsentoIptu() == null ? false:i.getIsentoIptu());
                resumoImovelIptuVO.setOcupacao(i.getOcupacao()+"");
                resumoImovelIptuVO.setTopografia(i.getTopografia()+"");
                resumoImovelIptuVO.setSituacaoterreno(i.getSituacaoTerreno()+"");
                resumoImovelIptuVO.setPedologia(i.getPedologia()+"");
                resumoImovelIptuVO.setUtilizacao(i.getUtilizacao()+"");
                resumoImovelIptuVO.setPatrimonio(i.getPatrimonio()+"");
                resumoImovelIptuVO.setUsoimovel(i.getUsoImovel()+"");
                resumoImovelIptuVO.setCaracterizacao(i.getCaracterizacao()+"");
                resumoImovelIptuVO.setRevexterno(i.getRevExterno()+"");
                resumoImovelIptuVO.setPiso(i.getPiso()+"");
                resumoImovelIptuVO.setForro(i.getForro()+"");
                resumoImovelIptuVO.setCobertura(i.getCobertura()+"");
                resumoImovelIptuVO.setInstsanitaria(i.getInstalacoesEletricas()+"");
                resumoImovelIptuVO.setInsteletrica(i.getInstalacoesEletricas()+"");
                resumoImovelIptuVO.setPosicao(i.getPosicao()+"");
                
                                //complemento, cep, tsu, edificacao, tipoconstrucao, agua, iluminacao, limpezapublica,
                resumoImovelIptuVO.setTsu(i.getIsentoTsu()+"");
                resumoImovelIptuVO.setTipoconstrucao(i.getTipoConstrucao()+"");
                resumoImovelIptuVO.setIluminacao(i.getIluminacaoPublica()+"");
                resumoImovelIptuVO.setLimpezapublica(i.getLimpezaPublica()+"");
                
              
                txt.append("\n");
                txt.append(resumoImovelIptuVO.toString().replaceAll("null", "").replaceAll("\\[", "").replaceAll("\\]", ""));
                list.add(resumoImovelIptuVO);
            }

        }
    }

    public List<ResumoImovelIptuVO> getList() {
        return list;
    }

    public void setList(List<ResumoImovelIptuVO> list) {
        this.list = list;
    }

    public StringBuilder getTxt() {
        return txt;
    }

    public void setTxt(StringBuilder txt) {
        this.txt = txt;
    }

    public String getSql() {
        return sql;
    }

    public void setSql(String sql) {
        this.sql = sql;
    }
}
